#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project ：PythonData 
@File    ：PTA_FinalExercise.py
@Author  ：朱志文
@Date    ：2021/12/14 9:20 
'''
'''
7-1 美化姓名 (10 分)
输入姓名，美化后输出。

输入格式:
输入一个姓名，如“张无忌”、“哪吒”、“Fiona”

输出格式:
在姓名的左右各加上一个星号，如“*张无忌*”、“*哪吒*”、“*Fiona*”'''

# name = str(input())#输入
# print('*{name}*'.format(name=name))#输出

'''7-2 计算两个整数的差 (10 分)
计算两个整数的差。

输入格式:
在一行中用空格分隔输入两个整数a，b。

输出格式:
计算a-b的结果，按“s=?”的格式输出。'''

# a, b = map(int, input().split())#输入
# print("s={res}".format(res=a - b))#输出

'''
7-3 输入学生姓名，输出问候信息。 (10 分)
输入学生姓名name，输出问候信息"Hello,name"。

输入格式:
在一行中给出学生姓名 name。

输出格式:
在一行中输出：Hello,name!'''

# name = str(input())  # 输入
# print('Hello,{name}!'.format(name=name))  # 输出


'''
7-4 A+B (10 分)
在学习程序设计课程的入门阶段，经常要编写一些简单的练习程序，例如：输出Hello,world或计算A+B

输入格式:
输入两个整数，用1个空格隔开。

输出格式:
输出这两个整数的和。'''

# A, B = map(int, input().split())
# print('{res}'.format(res=A + B))

'''7-5 输出日期 (10 分)
本题目要求输入代表日期的3个整数Y（年）、M（月）和D（日），然后以“年-月-日”格式输出日期。

输入格式:
输入代表日期的3个合法整数Y（年）、M（月）和D（日）。

输出格式:
以“年-月-日”格式输出日期。'''

# Y=int(input())
# M=int(input())
# D=int(input())
# print('{year}-{month}-{date}'.format(year=Y,month=M,date=D))

'''7-6 求圆面积 (10 分)
输入圆的半径，求圆的面积（使用math库的pi常量）

输入格式:
输入圆的半径，可以是小数，也可以是整数。

输出格式:
输出结果，要求面积保留2位小数。输出格式为：圆面积是×××'''
# import math
#
# R = eval(input())
# print('圆面积是{s}'.format(s='%.2f' % (math.pi * R * R)))


'''7-7 重复多个星号 (10 分)
根据给定的整数n，在一行上打印n个*号。

输入格式:
输入一个整数n。

输出格式:
输出n个*号。'''
# n = int(input())
# print('*' * n)

'''
7-8 交换两个整数 (10 分)
输入两个整数，交换位置后输出。

输入格式:
在一行中用空格分隔输入两个整数a，b。

输出格式:
交换a，b的值后，按“a=? b=?”的格式输出'''

# a,b=map(int,input().split())
# print('a={} b={}'.format(b,a))


'''
7-9 人民币与美元汇率兑换程序 (10 分)
设计人民币与美元汇率兑换程序，按照1美元=7人民币的汇率 编写一个双向兑换程序。

输入格式:
输入美元或者人民币的金额，币种在前，金额在后，如：$20、￥100。每次输入一个金额。

输出格式:
输出经过汇率计算的美元或人民币的金额，格式与输入一样，结果保留两位小数。'''

# money=str(input())
# sym=money[:1]
# money=money[1:]
# if sym=='$':
#     money=int(money)*7
#     sym='￥'
#     print(sym+''+'%.2f'%money)
# elif sym=='￥':
#     money=int(money)/7
#     sym='$'
#     print(sym+''+'%.2f'%money)
# else:
#     print("输入格式错误")


'''
输入2个正整数lower和upper（-20<=lower<=upper<=50），表示摄氏范围。请输出一张取值范围为[lower，upper]、 且每次增加2摄氏度的摄氏-华氏温度转换表。温度转换的计算公式： F=C×1.8+32 其中：C表示摄氏温度，F表示华氏温度。

输入格式:
在一行中输入2个整数，分别表示lower和upper的值，中间用空格分开。

输出格式:
第一行输出："celsius□□□□fahr"

接着每行输出一个摄氏温度celsius（整数）与一个华氏温度fahr（占据14个字符宽度，靠右对齐，保留1位小数）。

若输入的范围不合法，则输出"Invalid."。'''

# lower,upper=map(int,input().split())
# if -20<=lower<=upper<=50:
#     print('elsius    fahr')
#     for C in range(lower,upper+1,2):
#         F=C*1.8+32;
#         print('{}{:>14}'.format(C,'%.1f'%F))
# else:
#     print('Invalid.')

'''7-11 显示菱形图形 (10 分)
显示菱形图形，每行的宽度是11。

输入格式:
输入显示的行数，行数在1,3,5,7,9,11中取值

输出格式:
菱形图形，每行的宽度是11'''
# def printRhombus(row):
#     #打印上三角
#     for i in range(row//2+1):
#         #第1行的时候有5个空格 第2行的时候有4个空格
#         for _ in range(11//2-i):
#             print(' ',end='')
#         #第1行的时候有1个星 第2行的时候有3个星
#         for _ in range(2*i+1):
#             print('*',end='')
#         for _ in range(11//2-i):
#             print(' ',end='')
#         print()
#     #打印下三角
#     for i in range(row//2):
#         #第1行的时候有3个空格 第2行的时候有4个空个
#         for _ in range(11//2-row//2+1+i):
#             print(' ',end='')
#         #第1行的时候有3个星 第2行的时候有1个星 以此类推
#         for _ in range(2*(row//2)-1-2*i):
#             print('*',end='')
#         for _ in range(11//2-row//2+1+i):
#             print(' ',end='')
#         print()
# row=int(input())
# if row in [1,3,5,7,9,11]:
#     printRhombus(row)

'''
7-12 求误差小于输入值的e的近似值 (10 分)
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当
ei+1-ei<error,则表示e的近似值满足误差范围。

输入格式:
在一行输入误差范围,误差小于等于0.01。

输出格式:
在一行输出e的近似值（保留6位小数）。'''
# import math
# def appValue(error):
#     sumE=1;
#     count=1;
#     while 1/math.factorial(count-1)>error:
#         sumE+=1/math.factorial(count);
#         count+=1;
#     print('{}'.format('%.6f'%sumE))
#
# error=float(input())
# appValue(error)

'''
7-13 显示指定范围的素数并求和 (10 分)
本题要求显示给定整数M和N区间内素数并对它们求和。

输入格式:
在一行输入两个正整数M和N（1≤M≤N≤1000）。

输出格式:
显示指定范围的素数，素数间空一格，每五个换一行。 单独一行输出素数的个数及素数的和。'''

# def isPrime(num):
#     for i in range(2,num):
#         if num%i==0:
#             return False;
#     return True if num!=1 else False;
# def sumPrime(M,N):
#     listPrime=[]
#     for i in range(M,N+1):
#         if isPrime(i):
#             listPrime.append(i)
#     count=0
#     sum=0
#     for i in listPrime:
#         sum+=i
#         count+=1
#         print(i,end=' ')
#         if count%5==0:
#             print()
#     print()
#     print('amount={} sum={}'.format(len(listPrime),sum))
# M,N=map(int,input().split())
# if 1<=M<=N<=1000:
#     sumPrime(M,N)

'''
7-14 分解素因子 (10 分)
假设n是一个正整数，它的值不超过1000000，请编写一个程序，将n分解为若干个素数的乘积。

输入格式:
首先输入一个正整数T，表示测试数据的组数，然后是T组测试数据。每组测试数据输入一个正整数n（1< n ≤1000000）。

输出格式:
每组测试对应一行输出，输出n的素数乘积表示式，式中的素数从小到大排列，两个素数之间用一个“*”表示乘法。若输入的是素数，则直接输出该数。'''


# def disFactor(num):
#     a=2 #最小素数
#     while True:
#         if num==a:#素数等于a 则结束
#             print(a)
#             break
#         if num>a:
#             if num%a==0:
#                 print(a,end='*')
#                 num=num/a;
#             else:
#                 a=a+1;
#
# T=int(input())
# listFac=[]
# for _ in range(T):
#     n=int(input())
#     listFac.append(n)
# for i in listFac:
#     disFactor(i)

'''
7-15 打印数字三角形图案 (10 分)
本题目要求编写程序打印，输入一个正整数n（1<=n<=10)，输出由数字组成的三角形图案。

输入格式:
输入正整数n。

输出格式:
输出由数字组成的三角形图案，数字之间用没有空格分隔。'''
# def printNum(num):
#     for i in range(1,num+1):
#         for j in range(1,i+1):
#             print(j,end='')
#         print()
# n=int(input())
# printNum(n)

'''
7-16 生成输入数的乘方表 (10 分)
输入一个非负数和正整数n，3<=n<=9，生成一张输入数的乘方表。

输入格式:
在一行输入一个非负数和正整数n。

输出格式:
按照幂的递增顺序输出n+1行，计算结果保留2位小数。'''
# num,n=input().split()
# num=float(num)
# n=int(n)
# if 3<=n<=9:
#     for i in range(n+1):
#         print('{}**{}={}'.format(num,i,'%.2f'%num**i))


'''
7-17 求π的近似值 (10 分)
用公式求π的近似值：
当求和项小于误差时,结束求和。

输入格式:
在一行输入误差范围

输出格式:
在一行输出π的近似值（保留6位小数）。'''
# import math
# def appPi(error):
#     sumPi=0;
#     count=1;
#     n=1
#     while n>error:
#         n = 1/count ** 2
#         sumPi+=n
#         count+=1
#     print('%.6f'%(math.sqrt(sumPi*6)))
# error=float(input())
# appPi(error)

'''
7-18 求分数序列前N项和 (10 分)
本题要求编写程序，计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起，每一项的分子是前一项分子与分母的和，分母是前一项的分子。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值，精确到小数点后两位。题目保证计算结果不超过双精度范围。'''
# def sumNTerm(N):
#     mol=2 #分子
#     den=1 #分母
#     sum=0
#     for _ in range(N):
#         sum+=mol/den
#         mol,den=mol+den,mol #注意该序列从第2项起，每一项的分子是前一项分子与分母的和，分母是前一项的分子
#     return sum
# N=int(input())
# print('%.2f'%sumNTerm(N))

'''
7-19 计算分段函数[1] (10 分)
本题目要求计算下列分段函数f(x)的值：

公式

输入格式:
输入在一行中给出实数x。

输出格式:
在一行中按“f(x) = result”的格式输出，其中x与result都保留一位小数。'''
# def f(x):
#     return 1/x if x!=0 else 0;
# x=eval(input())
# print('f({}) = {}'.format('%.1f'%x,'%.1f'%f(x)))

'''
7-20 输出华氏-摄氏温度转换表 (10 分)
输入2个正整数lower和upper（lower≤upper≤100），请输出一张取值范围为[lower，upper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式：C=5×(F−32)/9，其中：C表示摄氏温度，F表示华氏温度。

输入格式:
在一行中输入2个整数，分别表示lower和upper的值，中间用空格分开。

输出格式:
第一行输出："fahr celsius"

接着每行输出一个华氏温度fahr（整型）与一个摄氏温度celsius（占据6个字符宽度，靠右对齐，保留1位小数）。

若输入的范围不合法，则输出"Invalid."。'''

# def tempCon(lower,upper):
#     print('fahr celsius')
#     for f in range(lower,upper+1,2):
#         c=5*(f-32)/9
#         print('{}{:>6}'.format(f,'%.1f'%c))
# lower,upper=map(int,input().split())
# tempCon(lower,upper) if lower<=upper<=100 else print('Invalid.')


'''
7-21 求奇数分之一序列前N项和 (10 分)
本题要求编写程序，计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S，精确到小数点后6位。题目保证计算结果不超过双精度范围。'''

# def sumOdd(N):
#     odd=1;
#     sum=0;
#     for _ in range(N):
#         sum+=1/odd
#         odd+=2
#     return sum
# N=int(input())
# print('sum = {}'.format('%.6f'%sumOdd(N)))

'''
7-22 阶梯电价 (10 分)
为了提倡居民节约用电，某省电力公司执行“阶梯电价”，安装一户一表的居民用户电价分为两个“阶梯”：月用电量50千瓦时（含50千瓦时）以内的，电价为0.53元/千瓦时；超过50千瓦时的，超出部分的用电量，电价上调0.05元/千瓦时。请编写程序计算电费。

输入格式:
输入在一行中给出某用户的月用电量（单位：千瓦时）。

输出格式:
在一行中输出该用户应支付的电费（元），结果保留两位小数，格式如：“cost = 应付电费值”；若用电量小于0，则输出"Invalid Value!"。'''

# def elePrice(power):
#     return power*0.53 if power<=50 else ((50*0.53)+(power-50)*0.58)
# power=eval(input())
# print('cost = {}'.format('%.2f'%elePrice(power))) if power>0 else print('Invalid Value!')

'''
7-23 求交错序列前N项和 (10 分)
本题要求编写程序，计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值，结果保留三位小数。'''
# def sumNTerm(N):
#     mol=1 #分子
#     den=1 #分母
#     sum=0
#     for i in range(1,N+1):
#         sum=sum+(-1)**(i+1)*(mol/den)
#         mol,den=mol+1,den+2;
#     return sum
# N=int(input())
# print('%.3f'%sumNTerm(N))


'''
7-24 比较大小 (10 分)
本题要求将输入的任意3个整数从小到大输出。

输入格式:
输入在一行中给出3个整数，其间以空格分隔。

输出格式:
在一行中将3个整数从小到大输出，其间以“->”相连。'''
# a,b,c=map(int,input().split())
# list=[a,b,c]
# list=sorted(list)
# count=1
# for i in list:
#     if count==len(list):
#         print(i, end='')
#     else:
#         print(i, end='->')
#         count += 1

'''
7-25 特殊a串数列求和 (10 分)
给定两个均不超过9的正整数a和n，要求编写程序求a+aa+aaa++⋯+aa⋯a（n个a）之和。

输入格式：

输入在一行中给出不超过9的正整数a和n。

输出格式：
在一行中按照“s = 对应的和”的格式输出。'''

# def sumTerm(a,n):
#     sum=0
#     a=str(a)
#     for i in range(1,n+1):
#         count=int(a*i)
#         sum+=count
#     return sum
# a,n=map(int,input().split())
# if a<=9 and n<=9:
#     print('s = {}'.format(sumTerm(a,n)))


'''
7-26 产生每位数字相同的n位数 (10 分)
读入2个正整数A和B，1<=A<=9, 1<=B<=10,产生数字AA...A,一共B个A

输入格式:
在一行中输入A和B。

输出格式:
在一行中输出整数AA...A,一共B个A'''

# def sumDigits(A,B):
#     A=str(A)
#     result=A*B
#     return result
# A,B=map(eval,input().split(','))
# print(sumDigits(A,B))

'''
7-27 计算 11+12+13+...+m (10 分)
输入一个正整数m(20<=m<=100)，计算 11+12+13+...+m 的值。

输入格式:
在一行输入一个正整数m。

输出格式:
在一行中按照格式“sum = S”输出对应的和S.'''

# def addToM(m):
#     sum=0
#     for i in range(11,m+1):
#         sum+=i;
#     return sum
# m=int(input())
# if 20<=m<=100:
#     print('sum = {}'.format(addToM(m)))

'''
7-28 转换函数使用 (10 分)
输入一个整数和进制，转换成十进制输出

输入格式:
在一行输入整数和进制

输出格式:
在一行十进制输出结果'''
# def converFun(num,advan):
#     rsult=int(str(num),advan)
#     return rsult
# mun,advan=map(int,input().split(','))
# print(converFun(mun,advan))

'''
7-29 输出“人生苦短，我学Python” (10 分)
输入格式:
无

输出格式:
人生苦短，我学Python'''
# print('人生苦短，我学Python')

'''
7-30 从键盘输入两个数，求它们的和并输出 (10 分)
本题目要求读入2个整数A和B，然后输出它们的和。

输入格式:
在一行中给出一个被加数
在另一行中给出一个加数

输出格式:
在一行中输出和值。'''
# def sum(A,B):
#     sum=A+B;
#     return sum
# A=int(input())
# B=int(input())
# print(sum(A,B))

'''
7-31 从键盘输入三个数到a,b,c中，按公式值输出 (10 分)
在同一行依次输入三个值a,b,c，用空格分开，输出 b*b-4*a*c的值

输入格式:
在一行中输入三个数。

输出格式:
在一行中输出公式值。'''

# a,b,c=map(eval,input().split())
# sum=b*b-4*a*c
# print(sum)

'''
7-32 求平方与倒数序列的部分和 (10 分)
本题要求对两个正整数m和n（m≤n）编写程序，计算序列和m 
2
 +1/m+(m+1) 
2
 +1/(m+1)+⋯+n 
2
 +1/n。

输入格式:
输入在一行中给出两个正整数m和n（m≤n），其间以空格分开。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S，精确到小数点后六位。题目保证计算结果不超过双精度范围。'''
# def sumTerm(m,n):
#     sum=0
#     while m<=n:
#         sum+=m**2+1/m
#         m+=1
#     return sum
# m,n=map(int,input().split())
# if m<=n:
#     print('sum = {}'.format('%.6f'%sumTerm(m,n)))

'''
7-33 输出三角形面积和周长 (10 分)
本题要求编写程序，根据输入的三角形的三条边a、b、c，计算并输出面积和周长。注意：在一个三角形中， 任意两边之和大于第三边。三角形面积计算公式：area= 
s(s−a)(s−b)(s−c)
​
 ，其中s=(a+b+c)/2。

输入格式：
输入为3个正整数，分别代表三角形的3条边a、b、c。

输出格式：
如果输入的边能构成一个三角形，则在一行内，按照

area = 面积; perimeter = 周长
的格式输出，保留两位小数。否则，输出

These sides do not correspond to a valid triangle'''

# def printTriArea(a,b,c):
#     s=(a+b+c)/2
#     area=(s*(s-a)*(s-b)*(s-c))**0.5
#     return area
# def printTriPer(a,b,c):
#     perimeter=a+b+c
#     return perimeter
# a,b,c=map(int,input().split())
# if a+b>c and a+c>b and b+c>a:
#     print('area = {}; perimeter = {}'.format('%.2f'%printTriArea(a,b,c),'%.2f'%printTriPer(a, b, c)))
# else:
#     print('These sides do not correspond to a valid triangle')

'''
7-34 分段计算居民水费 (10 分)
为鼓励居民节约用水，自来水公司采取按用水量阶梯式计价的办法，居民应交水费y（元）与月用水量x（吨）相关：当x不超过15吨时，y=4x/3；超过后，y=2.5x−17.5。请编写程序实现水费的计算。

输入格式：
输入在一行中给出非负实数x。

输出格式：
在一行输出应交的水费，精确到小数点后2位。'''
# def calcWater(x):
#     return 4*x/3 if x<15 else 2.5*x-17.5
# x=eval(input())
# if x>=0:
#     print('%.2f'%calcWater(x))

'''
7-35 求整数段和 (10 分)
给定两个整数A和B，输出从A到B的所有整数以及这些数的和。

输入格式：
输入在一行中给出2个整数A和B，其中−100≤A≤B≤100，其间以空格分隔。

输出格式：
首先顺序输出从A到B的所有整数，每5个数字占一行，每个数字占5个字符宽度，向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。'''
def sumInt(A,B):
    count=0
    sum=0
    for i in range(A,B+1):
        print('{:>5d}'.format(i),end='')
        sum+=i
        count+=1;
        if count%5==0:
            print()
    print()
    print('Sum = {}'.format(sum))

A,B=map(int,input().split())
if -100<=A<=B<=100:
    sumInt(A,B)

'''
7-36 生成3的乘方表 (10 分)
输入一个非负整数n，生成一张3的乘方表，输出3 
0
 ~3 
n
 的值。可调用幂函数计算3的乘方。

输入格式:
输入在一行中给出一个非负整数n。

输出格式:
按照幂的递增顺序输出n+1行，每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。'''

# def threeRides(n):
#     for i in range(n+1):
#         print('pow(3,{}) = {}'.format(i,3**i))
# n=eval(input())
# if n>=0:
#     threeRides(n)

'''
7-37 统计学生平均成绩与及格人数 (10 分)
本题要求编写程序，计算学生们的平均成绩，并统计及格（成绩不低于60分）的人数。题目保证输入与输出均在整型范围内。

输入格式:
输入在第一行中给出非负整数N，即学生人数。第二行给出N个非负整数，即这N位学生的成绩，其间以空格分隔。

输出格式:
按照以下格式输出：

average = 成绩均值
count = 及格人数
其中平均值精确到小数点后一位。'''
# def studentAvgCount(grades):
#     sum=0
#     count=0
#     for i in grades:
#         sum+=i
#         if i>=60:
#             count+=1
#     avg=sum/len(grades)
#     return avg,count
# N=int(input())
# if N!=0:
#     grades = list(map(int, input().split()))
#     if len(grades)==N:
#         avg,count=studentAvgCount(grades)
#         print(f'average = {"%.1f"%avg}')
#         print(f'count = {count}')
# else:
#     print("average = 0.0")
#     print("count = 0")

'''
7-38 统计字符 (10 分)
本题要求编写程序，输入10个字符，统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:
输入为10个字符。最后一个回车表示输入结束，不算在内。

输出格式:
在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。'''

# def staChar(char,count):
#     letter=0;digit=0;blank=0;other=0
#     for i in char:
#         if i.isalpha():
#             letter+=1;
#         elif i==' ':
#             blank+=1
#         elif '0'<=i<='9':
#             digit+=1
#         else:
#             other+=1
#     print(f'letter = {letter}, blank = {blank+count}, digit = {digit}, other = {other}')
#
# char=[]
# count=0
# #******
# while True:
#     listChar=list(input())
#     count+=1
#     char.extend(listChar)
#     if len(char)+count>10:
#         count-=1
#         break
# staChar(char,count)

'''
7-39 查询水果价格 (10 分)
给定四种水果，分别是苹果（apple）、梨（pear）、桔子（orange）、葡萄（grape），单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单：

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时，程序应自动退出查询；不到5次而用户输入0即退出；输入其他编号，显示价格为0。

输入格式:
输入在一行中给出用户连续输入的若干个编号。

输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入，在一行中按格式“price = 价格”输出查询结果，其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时，程序结束。'''

# def selectPrice(nos):
#     count=0;
#     fruitdic={1:3,2:2.5,3:4.1,4:10.2}
#     for i in nos:
#         if count!=5:
#             if i ==0:
#                 break
#             if i in [1,2,3,4]:
#                 print(f'price = {"%.2f"%fruitdic.get(i)}')
#             else:
#                 print('price = 0.00')
#             count += 1
#         else:
#             break
# nos=list(map(int,input().split()))
# print('[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit')
# selectPrice(nos)



'''
7-40 求e的近似值 (10 分)
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n，求该级数的前 n+1 项和。

输入格式:
输入第一行中给出非负整数 n（≤1000）。

输出格式:
在一行中输出部分和的值，保留小数点后八位。'''

# import math
# def appValue(n):
#     sum=1
#     for i in range(1,n+1):
#         sum+=1/math.factorial(i)
#     return sum
# n=eval(input())
# print('%.8f'%appValue(n))

'''
7-41 统计素数并求和 (10 分)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:
输入在一行中给出两个正整数M和N（1≤M≤N≤500）。

输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和，数字间以空格分隔。'''

# def isPrime(num):
#     for i in range(2,num):
#         if num%i==0:
#             return False
#     return True if num!=1 else False
#
# def sumPrime(M,N):
#     count=0;
#     sum=0
#     for i in range(M,N+1):
#         if isPrime(i):
#             count+=1
#             sum+=i
#     return count,sum
# M,N=map(int,input().split())
# count,sum=sumPrime(M,N)
# print(f'{count} {sum}')


'''
7-42 换硬币 (10 分)
将一笔零钱换成5分、2分和1分的硬币，要求每种硬币至少有一枚，有几种不同的换法？

输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。

输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序，输出各种换法。每行输出一种换法，格式为：“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。'''
# def changeCoin(x):
#     count=0
#     for five in range(x,0,-1):
#         for two in range(x,0,-1):
#             for one in range(1,x):
#                 if five*5+two*2+one*1==x:
#                     print(f'fen5:{five}, fen2:{two}, fen1:{one}, total:{five+two+one}')
#                     count+=1
#     print(f'count = {count}')
# x=int(input())
# changeCoin(x)

'''
7-43 最大公约数和最小公倍数 (10 分)
本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:
输入在一行中给出两个正整数M和N（≤1000）。

输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数，两数字间以1空格分隔。'''
# def divAndMul(M,N):
#     if M>N:
#         M,N=N,M
#     for factor in range(M,0,-1):
#         if M%factor==0 and N%factor==0:
#             print(f'{factor} {M*N//factor}')
#             break
# M,N=map(int,input().split())
# divAndMul(M, N)

'''
7-44 猴子吃桃问题 (10 分)
一只猴子第一天摘下若干个桃子，当即吃了一半，还不过瘾，又多吃了一个；第二天早上又将剩下的桃子吃掉一半，又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时，见只剩下一个桃子了。问：第一天共摘了多少个桃子？

输入格式:
输入在一行中给出正整数N（1<N≤10）。

输出格式:
在一行中输出第一天共摘了多少个桃子。'''
# def eatPeach(N):
#     # 10个桃子 第一天 10/2-1 第二天（10/2-1）/2-1
#     remain=1
#     for i in range(N-1):
#         remain=(remain+1)*2
#     return remain
# N=int(input())
# if 1<=N<=10:
#     print(eatPeach(N))


'''
7-45 验证“哥德巴赫猜想” (10 分)
数学领域著名的“哥德巴赫猜想”的大致意思是：任何一个大于2的偶数总能表示为两个素数之和。比如：24=5+19，其中5和19都是素数。本实验的任务是设计一个程序，验证20亿以内的偶数都可以分解成两个素数之和。

输入格式：
输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。

输出格式：
在一行中按照格式“N = p + q”输出N的素数分解，其中p ≤ q均为素数。又因为这样的分解不唯一（例如24还可以分解为7+17），要求必须输出所有解中p最小的解。'''

# def isPrime(nums):
#     for i in range(2,int(nums**0.5)+1):
#         if nums%i==0:
#             return False
#     return True if nums!=1 else False
# def validate(N):
#     #取前一半提高验证效率
#     for p in range(2,N//2+1):
#         q=N-p
#         if isPrime(p) and isPrime(q):
#             if p+q==N:
#                 return p,q
#                 break
#
#
# N=int(input())
# if N%2==0:
#     p,q=validate(N)
#     print(f'{N} = {p} + {q}')


'''
7-46 jmu-python-判断是否构成三角形 (10 分)
输入三角形的三边，判断是否能构成三角形。若能构成输出yes，否则输出no。

输入格式:
在一行中直接输入3个整数，3个整数之间各用一个空格间隔，没有其他任何附加字符。

输出格式:
直接输出yes或no，没有其他任何附加字符。'''
# def isTri(a,b,c):
#     if a+b>c and a+c>b and b+c>a:
#         return True
#     return False
# a,b,c=map(int,input().split())
# print('yes') if isTri(a,b,c) else print('no')

'''
7-47 判断素数 (10 分)
判断一个给定的正整数是否素数

输入格式:
输入在第一行给出一个正整数N（≤ 10），随后N行，每行给出一个小于1000000 的需要判断的正整数

输出格式:
对每个需要判断的正整数，如果它是素数，则在一行中输出Yes，否则输出No'''
# def isPrime(nums):
#     for i in range(2,int(nums**0.5)+1):
#         if nums%i==0:
#             return False
#     return True if nums!=1 else False
# N=int(input())
# list=[]
# for _ in range(N):
#     n=int(input())
#     list.append(n)
# for i in list:
#     print('Yes') if isPrime(i) else print('No')

'''
7-48 水仙花数（20 分） (10 分)
水仙花数是指一个N位正整数（N≥3），它的每个位上的数字的N次幂之和等于它本身。 例如：153=1×1×1+5×5×5+3×3×3。

本题要求编写程序,计算所有N位水仙花数。

输入格式:
输入在一行中给出一个正整数N（3≤N≤5）

输出格式:
按递增顺序输出所有N位水仙花数，每个数字占一行。'''
#
# def daffCount(N):
#     for num in range(10**(N-1),10**N):
#         sum=0;
#         numstr=str(num);
#         for i in range(N):
#             sum=sum+int(numstr[i])**N
#         if sum==num:
#             print(num)
# N=int(input())
# if 3<=N<=5:
#     daffCount(N)

'''
7-49 输出前 n 个Fibonacci数 (10 分)
本题要求编写程序，输出菲波那契（Fibonacci）数列的前N项，每行输出5个，题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和（最开始两项均定义为1）的数列，例如：1，1，2，3，5，8，13，...。

输入格式:
输入在一行中给出一个整数N（1≤N≤46）。

输出格式:
输出前N个Fibonacci数，每个数占11位，每行输出5个。如果最后一行输出的个数不到5个，也需要换行。

如果N小于1，则输出"Invalid."'''

# def fib_topitem(n):
#     if n==1:
#         return [1]
#     if n==2:
#         return [1,1]
#     fibs=[1,1]
#     for i in range(2,n):
#         fibs.append(fibs[-1] + fibs[-2])
#     return fibs
# N=int(input())
# if 1<=N<=46:
#     count=0
#     for i in fib_topitem(N):
#         print('{:>11}'.format(i), end='')
#         count += 1
#         if count%5==0:
#             print('')
# if N < 1:
#     print("Invalid.")


'''

7-50 求满足条件的斐波那契数 (10 分)
斐波那契数，亦称之为斐波那契数列，指的是这样一个数列：1、1、2、3、5、8、13、21、……，这个数列从第3项开始，每一项都等于前两项之和。求大于输入数的最小斐波那契数。

输入格式:
在一行输人一个正整数n(n>=10)。

输出格式:
在一行输出大于n的最小斐波那契数。'''
# def fib_item(n):
#     a,b=1,1
#     while a<n:
#         a,b=b,a+b
#     return a
# n=int(input())
# print(fib_item(n))